Search engine and indexing techniques

ABSTRACT

A local search engine geographically indexes information for searching by identifying a geocoded web page of a web site and identifying at least one geocodable web page of the web site. The system identifies a geocode contained within content of the geocoded web page of the web site. The geocode indicates a physical location of an entity associated with the web site. The system indexes content of the geocoded web page and content of the geocodable web page. The indexing including associating the geocode contained within content of the geocoded web page to the indexed content of the geocoded web page and the geocodable web page to allow geographical searching of the content of the web pages.

CROSS REFERENCE TO RELATED APPLICATIONS

This Patent Application claims priority and is a continuation of U.S.patent application Ser. No. 11/761,082 filed on Jun. 11, 2007, entitled,“METHODS AND APPARATUS PROVIDING LOCAL SEARCH ENGINE”, which is itself acontinuation of U.S. patent application Ser. No. 11/032,385 (now U.S.Pat. No. 7,235,405) filed on Jan. 10, 2005, entitled, “METHOD ANDAPPARATUS OF INDEXING WEB PAGES OF A WEB SITE FOR GEOGRAPHICAL SEARCHINGBASED ON USER LOCATION,” which claims the benefit of U.S. ProvisionalPatent Application No. 60/568,975 filed on May 8, 2004, entitled,“METHODS AND APPARATUS PROVIDING LOCAL SEARCH ENGINE”, the contents andteachings of which are hereby incorporated by reference in theirentirety.

BACKGROUND

Conventional computer networking environments support the exchange ofinformation and data between many interconnected computer systems usinga variety of mechanisms. In an example computer-networking environmentsuch as the Internet, one or more client computer systems can operateclient software applications that transmit data access requests usingone or more data communications protocols over the computer network toserver computer systems for receipt by server software application(s)executing on those servers. The server software application(s) receiveand process the client data access requests and can prepare and transmitone or more server responses back to the client computer systems forreceipt by the client software applications. In this manner,client/server software applications can effectively exchange data over anetwork using agreed-upon data formats.

One example of a conventional information exchange system that operatesbetween computer systems over a computer network such as the Internet isprovided by a set of applications and data communications protocolscollectively referred to as the World Wide Web. In a typicalconventional implementation of the World Wide Web, client computersystems operate a client software application referred to as a webbrowser. A typical web browser operates to provide hypertext transportprotocol (HTTP) requests for documents, referred to as “web pages,” overthe computer network to web server computer systems. A web serversoftware application operating in the web server computer system canreceive and process an HTTP web page request and can return or “serve” acorresponding web page document or file specified (i.e., requested) inthe client request back to the requesting client computer system overthe computer network for receipt by the client's web browser. The webpage is typically formatted in a markup language such as the hypertextmarkup language (HTML) or the extensible markup language (XML).

The World Wide Web contains billions of static web pages, and it isgrowing at a very fast speed, with many hundreds or thousands of webpages being created and placed for access on the Internet each day. Tobe able to efficiently access web pages of interest to people using webbrowsers, software developers have created web sites that operate assearch engines or portals. A typical conventional search engine includesone or more web crawler processes that are constantly identifying newlydiscovered web pages. This process is frequently done by followinghyperlinks from existing web pages to the newly discovered web pages.Upon discovery of a new web page, the search engine employs an indexerto process and index the content such as the text of this web pagewithin a searchable database by producing an inverted index. Generally,an inverted index is defined as an index into a set of texts of thewords in the texts. A searcher then processes user search requestsagainst the inverted index. When a user operates his or her browser tovisit the search engine web site, the search engine web page allows auser to enter one or more textual search keywords that represent contentthat the user is interested in searching for within the indexed contentof web pages within the search engine database. The search engine usesthe searcher to match the user supplied keywords to the inverted indexedcontent of web pages in its database and returns a web page to theuser's browser listing the identity (typically a hyperlink to the page)of web pages within the world wide web that contain the user suppliedkeywords. Popular conventional web search engines in use today includeGoogle (accessible on the Internet at http://www.google.com/), Yahoo(http://www.yahoo.com/), Lycos (http://www.lycos.com) and many others.

SUMMARY

Modern conventional search engines are able to find relevant web pagecontent results based on user supplied search keywords. However, asearch using a web browser can find information contained in web pageslocated all over the world. However, if a user is looking for a web sitethat is associated with a local business or organization, conventionalsearch engines provide search results that may be overwhelming and notgeographically relevant to the user's location of interest. Forinstance, searching for a restaurant in the small town of Dayton, N.J.,in the United States using Google provides a large amount of web pagesthat are not related to restaurants in Dayton, N.J. By way of example,the search results may provide links to a web page for a restaurant inDayton Ohio, which is thousands of miles away.

Some conventional web sites provide web pages that are limited to alocal geographical area. For instance, community-based web sites maycontain links to web pages for restaurants, physicians, apartmentrentals, home services and the like for a certain geographical regions,such as a large city and are thus relevant to web users in that localarea. In contrast, there are a large number of web sites that have nophysical location constraints. For example, yahoo.com may be relevant topeople everywhere, but search results for local areas are oftencumbersome to work with when searching for a specific business or otherentity within a specific geographical region.

Embodiments of the invention significantly overcome the geographicalsearching deficiencies of conventional search engine web sites used toprovide information to users of the computer networks such as theInternet. In particular, embodiments of the invention are based on theobservation that there are no geographical boundaries to informationstored on the World Wide Web. However, people using the Internet areoften still constrained by their physical locations. For example, manypeople live, work, dine, shop and enjoy life in their local area most oftime. Thus, local information is more valuable for customers nearby.Traditionally, people use an information resource such as a phone book(e.g., yellow pages) to find a local or small business. A phone booksuch as the yellow pages lists business names, addresses, phone numbersor general advertising words describing the business.

In contrast to a phone book, a web site on the Internet can be reachedeverywhere and is not constrained in the amount of content it provides.However, the mere presence of a web site on the Internet does not mean aconsumer thousands of miles away is going to buy from a remote web site.Local advertising is much more effective when it offers products andservices in the geographical area of the consumer, and this isespecially true for small or medium-sized businesses. In the US, thereare about 10 million small and medium sized enterprises. A smallenterprise typically has less than nine employees and conducts amajority of its business within 50 miles of its location. As such,embodiments of the invention are also based in part on the observationthat consumers want to find local products or services, andentrepreneurs like to reach local consumers.

One advantage of configurations described herein is that they help tosolve the problem of how to let a local consumer reaching local websites. Conventional web sites do not adequately solve this problem sinceconventional search engines treat each word in web pages as keyword.Geographic information is no exception. Thus, for a query such as“Restaurant Dayton NJ”, a conventional search engine will find web pagescontaining the words “Restaurant” “Dayton” and “NJ”. A web page in Ohiomay contain the three words and lead to a page that is notgeographically located nearby to the user supplying those search terms.

Another observation upon which embodiments of the invention are based inpart is that geographically related web pages are often buried insideweb sites on the Internet. As an example, if a business has a web sitewith numerous web pages that are all accessible within a domain name ofthat company, only a small number of those pages might containgeographical information concerning the company, such as its address ofbusiness. Conventional search engines have no way of associating thegeographical information contained within one web page of a web site toother pages of that site for searching purposes. Embodiments of theinvention provide such a capability.

Another problem of conventional search engines that is addressed byconfigurations described herein is the relative speed of resultsretrieval. There are billions of static web pages existing on the WorldWide Web. The count does not include the “hidden web” documents that aregenerated dynamically through Relational Database Management Systems(RDBMS). The hidden web page count is estimated to be 400 to 500 timeslarger than statically defined pages. Even though the size of theInternet is huge, people still demand web page search results within 1second. This makes the response time barrier of general search enginesquite high. The most advanced search engines, such as Google, containonly a fraction of all Internet web pages (currently equal to about 4billion pages). Google uses about 10,000 web servers to process a query.Since conventional search engines search keywords one web page at atime, such conventional search engines can only find web pages thatcontain the searching text. In a typical local business web site, thegeographical information may be contained and displayed in the contentof only a few web pages such as the direction page, contact page or thelike. The other pages may have no geographical words at all. As aresult, a conventional search engine can not geographically referencethe other web pages that have no geographical words inside. Accordingly,conventional search engines are not geographical aware of pages thatcontain no geographic reference information and do not exclude web sitesthat are irrelevant to physical locations.

Relational Database Management Systems (RDBMS) have been used in websites that provide some local search capabilities. Such conventional websites organize information according to location and store it into arelational database. Online yellow pages, such as Superpages forinstance (www.superpages.com), store local business information in arelational database and utilize SQL language for searching. The databasecontains business name, address, and telephone data. The web pagecontent of a business is not searchable since it is not stored in therelational database. Thus conventional services such as online yellowpages are not a true local search engine.

In another conventional attempt at providing geographic information viaweb searching, Mobilemaps.com stores an inverted index of full web pageand geographical information to a MySQL database. In this case, the webpages are searchable in theory. However, a practical local search enginecontains several hundred million web pages. The total size of all webpages combined may be several hundred gigabytes. A RDBMS is notefficiently capable of handling that amount of data.

There are some other conventional approaches to navigate web pages bygeographic proximity, such as those described for instance in the paperentitled “Geospatial Mapping and Navigation of the Web” by Kevin S.McCurley, the entire contents of which is hereby incorporated byreference herein in its entirety. One system described in this paper canonly list Uniform Resource Locators (URLs) by geographic location andthis system has no search capacity. The geographical information isobtained from a remote Whois or IptoLL data source. However, since thecommercialization of Internet, such remote resource databases have beendispersed to several organizations and usage is now constrained byproprietary interests. In another paper “GeoSearcher: Location BasedRanking of Search Engine Results”, Carolyn Watters and Ghada Amoudiintroduce a conventional system that can sort the first 200 results froma general search engine altavista.com by geographical distance. ThatWatters/Amoudi system also uses the Whois and IptoLL for geographicalinformation. The Watters/Amoudi system is a meta search engine whichpresents a custom format of results of third party search engine. Thesystem by itself has no searching ability and again it relies on aproprietary geographical database that is not available or highlyaccurate.

Other conventional systems provide a ranking of search results inrelation to the user supplied search words. Ranking web pages is animportant part of conventional search engine operation. As an example, atypical user tends to provide one or two keywords to a conventionalsearch engine. As a specific example, the keyword “java” by Googlereturns 65,800,000 web page hits. The same keyword “java” by Yahooreturns 53,900,000 records. There are so many hits with conventional websites that a user is unable to realistically visit the web pages ofevery one of such hit. Using conventional search engine technology, anyweb document containing “java” will be included in the hits. The firsthit of Google is http://java.sun.com. The first hit in Yahoo ishttp://www.sun.com. Both Google and Yahoo provide results that indicatejava is a programming language from Sun Microsystems. However, the wordjava has many other meanings. People that are not familiar with javaprogramming language would be surprised at the search results. Thereason why do Google and Yahoo rank the java programming language firstinstead of a coffee shop is because of the ranking algorithm used bythese web search engines. As an example, a ranking system calledPageRank is considered the foundation of Google. U.S. Pat. No. 6,285,999entitled “Method for node ranking in a linked database” described a pagerank system used by Google. The entire content of U.S. Pat. No.6,285,999 is hereby incorporated by reference in its entirety. ThePageRank system calculates recursively the rank score of web page bylooking at its linked web pages—that is, those pages that link to (i.e.,that contain a hyperlink that reference the URL of) the page beingranked. A higher ranked web page has a higher weight in the rankingequation. Because of the way in which the PageRank algorithm operates,some companies hire so called search engine marketing experts to buildweb pages linked with each other to boost the score by increasing thenumber of remote web pages that reference a particular companies website.

For a small business's web site that has only a few sites linked to it,or for businesses that do not have the money to boost PageRank by searchengine marketing experts, search engines that use page ranking provideresults that contain the small business site referenced deep into thesearch results, often resulting in consumers missing those smallbusiness sites. Since the small business web site's PageRank is low,even if it can be searched by a traditional search engine, the resultsindicating the small business web site will be hundreds of pages away inthe search results. Embodiments of the invention significantly overcomethis problem using a unique ranking system that incorporates geographiclocation as well to rank a page based on other pages of other sites thatare local to the page being ranked.

Another system disclosed in U.S. Pat. No. 6,282,540 entitled “Method andsystem for providing a web-sharable personal database”, the entirecontents of which is hereby incorporated by reference herein, details asystem for providing a web-sharable personal database with proximitysearching capability. The system described in this patent is not a localgeographic based search engine. Instead, it focuses on create a personaldatabase and stored address information in database. Furthermore, it didnot address the challenge of mixing the power of conventional searchengine with geographical awareness.

Embodiments of the invention significantly overcome drawbacks ofconventional search engines and provide mechanisms and techniques forgeographically indexing information using a unique search enginearchitecture. Generally, the search engine configured in accordance withembodiments of the invention is capable of performing a web crawlingprocess to identify web pages of a web site. This can include traversinglinks originating from a seed web page to identify new web pages of theweb site and stripping the content of web pages of the web site to aformat containing only text. Some of the web pages of the web site maybe geocoded. A geocoded web page can contain, for example, addressinginformation that can be used to either directly identify a physicallocation of a business or other entity associated with the web site.Alternatively, a geocoded web page containing information such as atelephone number may be used to perform a manual or automated lookupoperation to identify the physical location of an entity associated withthe web site. The system thus identifies a geocoded web page of a website and identifies a geocode contained within content of the geocodedweb page of the web site. The geocode indicates a physical location ofan entity associated with the web site. The system also identifies atleast one geocodable web page of the web site. The geocodable web pageof the web site might be any page that does not contain geocodinginformation such as an address but nonetheless is associated with theweb site (e.g., has a URL that is within the same domain as the geocodedweb page). The system then indexes content of the geocoded web page andcontent of the geocodable web page(s). The indexing includes associatingthe geocode contained or derived from or within content of the geocodedweb page to the indexed content of the geocoded web page as well as toindexed content of geocodable web page to allow geographical searchingof both the content of the geocoded and geocodable web pages.

In this manner, for a typical web site that has numerous pages that donot contain addressing information, the system of the invention willidentify those pages (i.e., geocodable web pages) of the web site andwill produce a geocode representing the location specified within thegeocoded web pages (i.e., the those web pages the do contain an addressof the entity associated with the web site). The system produces anindex that associates the pages that did not contain addressinginformation to the geocode discovered on the pages the did containaddressing information, such that non-address containing pages can begeographically indexed according the geocode of those pages that docontain addressing information. Since the pages are related as beingpart of the same web site, the existence of the geographical informationspecified by the address of any page in the web site can be used togeographically associate to all pages of the web site within the index.Accordingly, the system of the invention allows a search provided by auser searching for pages containing content and that are located withina specific geographic location (e.g., a user supplied ZIP code forexample), to be applied to pages associated with that geographiclocation but that did not contain specific addressing information.

Configurations disclosed herein also provide the capability to sort thecontent of the geocoded and that geocodable web pages based on thegeocode to associate the content of the geocoded and geocodable webpages to a folder representing a geographic region that is inclusive ofthe geocode. The folder is selected from a plurality of folders eachrepresenting a respective geographic region that is different from thegeographic region of other folders. As an example, there may be a folderrepresenting each state within the United States of America.

Once within folders, the system performs georanking of content of theweb pages associated with the folder by analyzing link popularity oflinks contained within content of other web pages associated with thefolder that reference those web pages. In other words, in one exampleconfiguration, if a folder contains indexed content of all web pagesassociated with geocodes specifying locations within a particular stateof the United States of America, link analysis can be performed to rankthe content of individual pages associated with entities within thestate based upon the number of links to that paid from other pagesassociated with entities also contained within that state. In thismanner, the system adjusting a georank of a web page referenced by thatidentified link if the web page identified by that link has a geocodeassociated with the same folder associated with the web page from whichthe link was identified.

In other configurations, indexing is performed by generating an invertedindex of content within the folder that includes the content of thegeocoded web page and content of the geocodable web page. The invertedindex includes the geocode and georank for all content indexed andassociated with the geocoded and geocodable web pages in the folder. Thesystem provides for geographical searching of the content of thegeocoded web page and the geocodable web page(s) relative to the geocodeby processing a user query that includes a location against the indexedcontent of the geocoded web page and content of the geocodable web pageto identify web pages within a predetermined proximity to the locationspecified in the user query that contain content matching the userquery.

A crawler, geocoder, geosorter, georanker, geoindexer and geosearcher asdescribed herein can be, for example, computer software that can run inone or more computers, each of which has a memory encoded with asoftware application providing such processes, and each including one ormore processors capable of executing the application code of thecrawler, geocoder, geosorter, georanker, geoindexer and geosearcher toprovide corresponding respective processes for such components. Theprocessor and memory are interconnected with an interconnectionmechanism such as a data bus or other circuitry. The computer(s) caninclude a network interface to receive queries. Each component may runin a single computer or a cluster of computers. As an example, thecrawler, geocoder, geosorter, georanker and geoindexer may be run incomputers in a search engine business or web portal. The geosearchertypically runs in a data center and contains a number of servercomputers for fast performance.

The method and system disclosed herein has major advantages inperforming a local search compared with existing conventional apparatusand systems. It is more accurate because it analyzes the geographicalrelationship among web pages, not just one web page. It is much lessexpensive to implement than a conventional search engine because itorganizes the large amounts of data into smaller subsets. It is alsosignificantly faster since it searches a smaller geographically relateddata set to find matches as opposed to searching an entire database ofall web pages regardless of geography.

Other embodiments of the invention that are disclosed herein includesoftware programs to perform the method embodiment steps and operationssummarized above and disclosed in detail below. One such embodimentcomprises a computer program product that has a computer-readable mediumincluding computer program logic encoded thereon that, when performed ina computerized device having a coupling of a memory and a processor,programs the processor to perform the operations disclosed herein asembodiments of the invention. Such arrangements of the invention aretypically provided as software, code and/or other data (e.g., datastructures) arranged or encoded on a computer readable medium such as anoptical medium (e.g., CD-ROM), floppy or hard disk or other a mediumsuch as firmware or microcode in one or more ROM or RAM or PROM chips oras an Application Specific Integrated Circuit (ASIC). The software orfirmware or other such configurations can be installed onto acomputerized device to cause the computerized device to perform thetechniques explained herein as embodiments of the invention.

It is to be understood that the system of the invention can be embodiedstrictly as a software program, as software and hardware, or as hardwarealone such as within a processor, or within an operating system oranother execution environment such as a web server operating searchengine software.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, features and advantages of theinvention will be apparent from the following more particulardescription of embodiments of the invention, as illustrated in theaccompanying drawings and figures in which like reference charactersrefer to the same parts throughout the different views. The drawings arenot necessarily to scale, with emphasis instead being placed uponillustrating the embodiments, principles and concepts of the invention.

FIG. 1 illustrates a computer system that can be utilized to execute thesoftware of an embodiment of the invention.

FIG. 2 is a block diagram of a computer network in which the presentinvention is used.

FIG. 3 illustrates an architecture overview of local search engine inaccordance with one embodiment of the invention.

FIG. 4 illustrates a flow chart of a geocoder in accordance with oneembodiment of the invention.

FIG. 5 illustrates a flow chart of finding major geocode. Major geocoderepresents the physical office location of a geographical related website in accordance with one embodiment of the invention.

FIG. 6 shows a map of a simulated area.

FIG. 7 illustrates a flow chart of a geosorter in accordance with oneembodiment of the invention.

FIG. 8 shows a flow chart of a georanker in accordance with oneembodiment of the invention.

FIG. 9 shows a flow chart of a geoindexer in accordance with oneembodiment of the invention.

FIG. 10 illustrates a flow chart of a geosearcher in accordance with oneembodiment of the invention.

FIG. 11 illustrates a result web page generated by geosearcher inaccordance with one embodiment of the invention.

FIG. 12 illustrates a diagram of distributed geosearchers in accordancewith one embodiment of the invention.

DETAILED DESCRIPTION

Generally, configurations of the invention support crawling web pagesover a computer network and storing the web pages in a repository andextracting geographical information from certain of the web pages in therepository. The system associates geocodes, based on the extractedgeographical information, with the web pages that do not containgeographical information. The system sorts the web pages according tothe geographical information and stores the web pages within folders,with each folder containing web pages from a specific geographicalregion. The system assigns georanking scores for web pages based on linkpopularity within a geographical region represented by the foldercontaining the web pages and generates an inverted index of the sortedidentified web pages. The system stores geocodes and georanking scoresin the inverted index and allows geographical searching of the indexover a network to identify web pages having content of interest to auser and located nearest to a user defined location.

Embodiments of the invention are referred to herein as a “local searchengine”. Upon startup, the local search engine traverses links of ahyperlinked database to identify geocoded web pages. Any hyperlinkeddatabase can be the data source of a local search engine. The World WideWeb is the biggest hyperlinked database. In one embodiment, ahyperlinked database of a country is utilized, such as all web siteswithin United States, or all web sites within Canada. In anotherembodiment, a hyperlinked database of a state is selected, such as allweb sites in state of New Jersey. It is to be understood that the localsearch engine disclosed herein is not limited to a specific physicalarea.

A collection of documents that are geographically relevant can beanother data source of data to be traversed by a crawler of the localsearch engine. The documents may be in various formats such as Text,Microsoft Word, Microsoft PowerPoint, PDF, HTML or XML or the like. Thedocuments may be stored in files, or the documents may be stored asrecords in RDBMS or in any other data format. In one embodiment, thelocal search disclosed herein is applied for an online local classifiedweb site. The local classified web site stores local classified recordsin an RDBMS and displays results in web pages. The local search enginedisclosed herein is not limited to a specific data format and storage ofdata source.

FIG. 1 illustrates a computer system that can be utilized to execute thesoftware of an embodiment of the invention. Operation of the system isperformed when software embodying the search engine 100 is installed inthe computer. A computer configured to operate according to theinvention is thus an embodiment of the invention. The computer canoperate using an operating system such as Windows, Linux or Unix or anyother operating system platform. A typical computer system includes acoupling of a CPU or other processor 102 that can perform execution ofthe search engine 100, as well as a read only memory (ROM) 103 and/orrandom access memory (RAM) 104 into which processing logic that embodiesthe search engine 100 disclosed herein can be encoded. The CPU, ROM andRAM are installed in and coupled via a motherboard 101 (e.g., aninterconnection mechanism). In this example, the computer also containsa monitor 105, keyboard 106 and mouse 107 as the input output devices. Ahard drive 108 or other media can be used to store a software programand data that embodies the operational techniques of the search engine100 explained herein. As an example, a CD-ROM 109 and/or a Floppy disk110 are computer readable mediums that can embody the search engine 100as well. Various other devices communicate with the computer withvarious buses. As an example, there may be other devices such as tapes,optical disks, EPROM etc that can be configured in a computer system. Acomputer system can be a server, a personal computer, workstation, webserver, mainframe or any other type of general purpose or dedicatedcomputerized device. One or more network interfaces can be included toallow communication with other computers via a network as is known inthe art. The software and algorithm presented herein are not inherentlyrelated to any particular type of computer.

FIG. 2 is a block diagram of a computer network in which the presentinvention is used. The computer network such as the Internet 202includes clients 203 that are connected to servers 201. Servers 201represent a cluster of computers that store the software and barrels inlocal storage devices and are configured with the search engine 100disclosed herein. Severs 201 are connected using a high-speed localnetwork connection. A client 203 can be a personal computer (PC),laptop, workstation, personal digital assistant (PDA) or cell phone, orany other computing device capable of interfacing directly or indirectlyto the network 202. The client 203 can provide a query including wordsand geographic information (e.g., a zip code or other specificgeographical information of interest to a user) using a web browser andthe search engine 100 operating in one or more of the servers 201 willsearch results based on the query as explained herein. It should beunderstood that the communication between clients 203 and servers 201 isnot limited to Internet, and other communication networks can be usedsuch as an intranet, extranet, a non-TCP/IP based network, or the like.

FIG. 3 illustrates an architecture overview of local search engine 100in accordance with one example configuration. According to the highlevel operation of the system disclosed herein, one or more crawlers 301operate to download web pages for storage in local hard drives. This caninclude identifying (e.g., via following links) a geocoded web page of aweb site as well as identifying at least one geocodable web page of theweb site (i.e., a page that does not have location information therein).As an example, the crawler 301 traverses links originating from a seedweb page to identify new web pages of the web site and storing the pagescan include stripping the content of web pages of the web site to aformat containing only text content.

Next (or concurrently), a geocoder 302 operates to find physicallocations, referred to herein as geocodes, from the obtained content ofthe web pages. The geocoder 302 can analyze relationships among webpages of each web site and assign major geocodes for each web site. Amajor geocode is defined as the true physical location of a businessassociated with the web site for which at least one geocoded web pageand possibly several geocodable web pages have been discovered. Thegeosorter 303 sorts web pages and copies them to different folders 305.In one configuration, a folder can be any type of storage area (e.g.,directory, database, file system, server farm or group of computers,etc.) for storing related information and does not have to be a folderas known within the art of operating systems. Each folder contains webpage data from the same predefined geographical area. The georanker 304ranks web pages within each folder by link popularity analysis. A higherrank indicates a better quality of web page and indicates that there areother pages within the same folder (i.e., within the same generalgeographic region represented by the content of pages in that folder)that link to that page. The geoindexer 306 generates an inverted indexfor each folder. A geocode that represents an address or other physicallocation associated with that web page is stored along with each indexedweb page content. The geoindexer 306 distributes the indexed data into aset of barrels 307. In one configuration, web page data or content in afolder is mapped into one barrel so that each barrel contains arespective inverted index for a certain geographical area. A group ofdistributed geosearchers 308 (there can be several that concurrentlyoperate) can collectively perform searches against the barrels 307 tofind content matching user supplied query terms that include locationinformation.

In one configuration, each software component shown in FIG. 3 is asubsystem that is able to process very large scale data sources. Forinstance, multiple crawlers 301 can operate to download content fromnumerous (e.g., hundred, thousands, or even millions, depending upon thescale of the configuration) of web pages per day. The geocoder 302analyzes the geographical relationships and the geoindexer generatesbarrels that are efficient for performing a local search. It ispreferred to have a configuration in which a geosearcher 308 provides toresponse to a user query within one second. As such, the geosearcher 308may be run in distributed servers 201-1 . . . 201-N to meet requiredsearching and user demands.

The web crawlers 301, also called robots, spiders, or the like canidentify each web page by a URL that is unique to that page. Web pagescan contain URLs the reference other web pages and are thus linked withone another. This is called a hyperlinked database and represents theWorld Wide Web. During operation, the crawler can download the remoteweb pages, compress the web page data into a repository such as thefolders 305, and store this folder data for access by the othercomponents.

In one configuration, a crawler 301 downloads web pages based on linkdiscovery that begins from a seed URL, and operates to find new URLsfrom this seed web page. For each new page discovered, the crawler 301continue to download and discover newly found URLs (i.e., links to otherpages) until there are no new URLs that have not been visited. Thisprocess can take significant processing time. Allan Heydon and MarcNajork describe a crawler in paper entitled “Mercator: A Scalable,Extensible Web Crawler”. In one configuration, the seed URLs provided tothe crawler 301 can be regional web sites obtained from a category froma human edited open source web directory known as “dmoz.org”. As anotherexample, a good seed web site can be Chamber of Commerce web site for acity or town or state. Using one or more seed web sites, new URLs can bediscovered from the downloaded web pages obtained by the operation ofone or more crawlers 301. Due to the nature of such web sites, it islikely that the new URLs found from the seed URLs are geographicallyrelated.

In one configuration, the crawler(s) 301 compress web pages and storethe contents and URLs to a main repository. Compression is done in thisconfiguration to save disk space. As an example, a compression librarysuch as “Zlib” achieves approximately a four to one web page compressionratio. The crawler 301 in this example configuration also generates adocument index. A document index keeps information about each downloadedweb page document. The document index includes, for example, a documenttitle, a document status, and a pointer to the repository containing thecontent for that document. Each document is identified by a documentidentification (docID), which in one configuration is a checksum of theURL for that document. As noted above, the system can operate manydistributed crawlers for higher performance. The crawlers can beconfigured to re-fetch web site content periodically a certain timeinterval so that the indexed web page content is updated regularly.

In one embodiment, a geographical web site may be submitted as a seed ordiscovered during a crawling operation by the search engine 100. The website URL and a physical address of a business or other entity associatedwith the web site provide for operation of the invention as explainedherein. Note that the address content or other location informationconcerning the entity associated with the web site need not be locatedon the first (i.e., home) page of the site, but instead may be buriedseveral pages into the web site, for example, on a contacts web pageassociated (e.g., in the same domain) with the web site. The crawler 301initially checks that the submitted or discovered URL has beenpreviously identified (i.e., previously crawled). If not, the URL willbe included in the processing explained herein. If it has beenidentified, but the period for re-indexing has elapsed, then the sitecan be included in the indexing process again and its URL will be markedfor re-indexing.

In some situations, some small business or other web sites may be fairlynew and they can not be found by hyperlinks from existing web sites. Thesubmission process in one configuration also provides an opportunity forsmall business owners to include web site URLs into the local searchengine using a manual submission process. In other situation, some smallbusinesses may do not have a web site. In this situation, oneconfiguration allows a small business owner to submit to the searchengine 100 the business profile in an online format. The information caninclude the business title, business description, physical addresses,open hours, contact phone number, etc. The information is complementaryto crawler operation and can serve as another data source for the searchengine 100.

Embodiments of the invention are based in part on the observation thatgeographical information is not always readily available in all webpages of a particular web site. In addition, there is no standard withregard to how to embedded geographical information is provided in a webpage. A web site known as “Geotags.com” proposes the use of a specialgeotag in HTML pages. The geotag is a META tag in HTML page that containgeographical information, but it has yet to be standardized and is notwidely used. Accordingly, even though such tag exists, since META tagsare not visible to humans and are only visible to conventional searchengines crawlers, and thus use of such tags can be spammed and abused bywebmasters for example by duplicating the tags in pages. This isespecially the case for commercial driven conventional search engineoptimization. For instance, the content META tag is designed to describethe content of a web page. Content META tags are used by manyconventional search engines and such use provides an opportunity todescribe a web page that is irrelevant to the true web content incontrast to the content META tag. Thus, content META tag has beenabandoned by most search engines as an indicator of content of webpages. The system of the invention uses location information that isvisible both to the user as text and to the search engine, and thus doesnot require the user of any special geotag in HTML.

Another approach of conventional search engines is to provide a systemfor geographically authenticating electronic documents, such as thatdescribed in US patent application publication: 20040064334 “Method andapparatus for providing geographically authenticated electronicdocuments”, the entire contents of which is hereby incorporated byreference. In the system disclosed in publication 20040064334, a digitalcertificate is created and stored for a web document and itsgeographical information. However, the processing cost of suchinfrastructure is high and all web site owners must enable suchtechnology to participate.

One configuration of the system disclosed in accordance with the presentinvention uses the visible section in web pages, such as text contentcontaining address information, phone numbers or other location specificinformation to find geographical information. As an example, when a userwants to find the location of an entity associated with a particular website, that user will look at the most likely web pages such as a contactpage, an about page, a home page or similar page to find the address ofthe entity. If there are multiple addresses, a user will analyze therelationship among all addresses and pick the most likely one. Userswill not check a certain tag in an HTML page, and they will not check aWhois or similar database to determine a web site's physical locationeither.

The Geocoder 302 as disclosed herein is able find locations (i.e.,geocode information such as an address, phone number, etc.) in a similarway as do human beings. In order to find a reliable and preciselocation, the Geocoder 302 in one configuration analyzes relationshipamong all web pages of a web site to determine the true geographicallocation. As an example, pages within the same domain (e.g., the website is www.xyz.com and all page URLs for this site have this as part oftheir URL) can have a geocode associated to them (i.e., by the geocoder302) based on an address in the text content of one of the pages of thesite, even if this page is not the home page.

FIG. 4 illustrates a flow chart of processing steps performed by ageocoder 302 in accordance with one example configuration. Generally,the geocoder 302 operates to identify a geocode contained within contentof the geocoded web page of the web site. The geocode indicates aphysical location of an entity associated with the web site. Thegeocoder 302 identifies geocodes contained within content of thegeocoded web page of the web site, the processing operates for at leastone web page within the web site and identifies the web page as thegeocoded web page if the text content of that web page contains eitheri) a geocode such as an full address (e.g., street, city, state, zip) ina complete form within the text content of the web page or if the pagecontains at least a portion of the geocode within the text content ofthe identified web page. If the geocoder 302 discovers that a portion ofthe geocode within the text content of the identified web page ispresent, the geocoder 302 can perform, in one configuration, a secondarylookup operation to identify remaining content of the geocode. This caninclude performing, for example, a table lookup to find missing portionsof the geocode or a manual lookup allowing a person to supply missingportions of the geocode.

Once the geocode is discovered in the content of a geocoded web page,the geocoder 302 associates the geocode of the geocoded web page to allof the geocodable web pages of the web site that do not containaddressing information that can be geocoded, such that all web pages ofthe web site that do not contain addressing information that can begeocoded can be searched geographically.

In this example in FIG. 4, in step 401, the geocoder 302 obtains a USAtown lookup table, such as a ZIP code table. A physical location isdefined as geocode. Each web site may have one or more geocodes on oneor more web pages. For instance, a small business can have one or morephysical offices. The web site of the small business is related to thephysical office locations. One purpose of geocoder 302 is to identifythe physical locations related to or specified in content of the website. In one embodiment of the invention, geographic information ofUnited States is extracted from each web page. To do so, a look up tablecontaining all of the US town, state, zip code, latitude and longitudecan be constructed or obtained in step 401. A repository in step 402 isaccessed that contains all of web pages downloaded by crawler 301. Therepository is a large collection of web pages crawled by the crawler 301from many web sites. Each web site can be identified by a unique domainname and consists of a number of web pages having URLs within thatdomain. Web pages of an unprocessed web site can be fetched in step 403.The web pages are stripped to text format in step 404. As an example,special tags are eliminated since a typical HTML file contains certaintags such as <HTML>, <H1>, <BODY> <P> etc. The tags follow the W3Cstandard and are useful for display, but the tags are irrelevant tocontent used for search. The stripped text file is used for the rest ofthe example discussion provided herein.

A US physical location (e.g., a US geocode) typically includes a streetaddress, a town or city name, a state name and a zip code. A geocode ofeach web page is extracted in step 405. The street address has to bepresent to be considered a valid geocode in one configuration. Withregards to the town, state and zip code, there are several possiblevariations of the data that the geocoder 302 encounters. In onevariation a page only contains a town and state name. However, using anautomated lookup operation, based on the town and state name, thegeocoder 302 can check the look up table for the correspondent zip code.In another variation, there is only town name and zip code. In thiscase, the state name can be found from the look up table. In anothervariation, there is only a state name and zip code. In this case, thetown name is identified from the look up table. In another variation,there is only a zip code. Based on a zip code, the town and state namecan be determined from the look up table. The geocoder 302 can provideprocessing to support all these variations in order to extract andidentify a full and final geocode. Thus a full final geocode containsstreet name, town name, state name and zip code. In an alternativeconfiguration, a new geocode tag can be defined within a markup languagesuch as HTML or XML and can include specific geographic identityinformation. If the crawler 301 detects a page containing tagged geocodedata, the geocoder can recognize this and process it accordingly withouthaving to analyze the text content of the page. Thus the geocodeinformation can either be obtained dynamically from analysis of thetextual content of a page, or the geocode can be explicit within themarkup language encoded data or page.

In one configuration, once a geocode has been recognized and parsed, itcan be further mapped to a coordinate system such as latitude andlongitude. The latitude and longitude are useful to calculate distancesbetween two physical locations. The location can be displayed in agraphical or electronic map based on latitude and longitude as well.Note that the geographic information is not limited to United States.The geographic information of each country is organized as a knownformat. Thus the geocode detection method explained herein can beadapted to any country.

Continuing on with the flow chart in FIG. 4, the geocode of each webpage for a web site is analyzed in step 406. In configurations of theinvention, a concept of major and minor geocodes is presented. Majorgeocodes are primary addresses of a business, while minor geocodes areaddresses indicated, for example, in non-contact pages of a business website. In one configuration, a relationship among all of the geocodeswill be checked, and in particular, major geocode and minor geocodes areidentified. A business entity may have one or more physical addresses.The addresses should be listed in the web site. A major geocode reflectsthe actual location of the business. However, in the same web site, itmay contain addresses of other reference information. These addressesare considered minor geocodes. The major and minor geocodes areidentified in step 407. The process of major and minor geocode detectionwill be explained further in FIG. 5. After step 407, the geocoder 302checks if there are unprocessed web site pages remaining in therepository in step 408. If there are, the geocoder 302 will returnprocessing to step 403 and follow the steps explained above until allweb sites have been processed.

As briefly mentioned above, the geocode of the geocoded web page may bea major or a minor geocode. Major geocodes are those address appearingon the geocoded web pages that are, for example, a home page of the website, a contact page of the web site, a direction page of the web site,an about page of the web site, a help page of the web site or a page ofthe web site that is no deeper than a predetermined number of linksbelow the home page of the web site. The major geocode contains acomplete physical address of the entity associated with the web site. Inthe case of a minor geocode, the geocoder 302 identifies a web page ofthe web site containing addressing information indicating a minorgeocode, which is a geocode other than the major geocode (i.e., on apage other than those listed above). In such cases, the geocoder 302associates the major geocode to the web page of the web site containinga minor geocode and further associates the minor geocode only to the webpage of the web site containing addressing information indicating aminor geocode (i.e., only to the content of the page containing thatminor geocode), such that the web page of the web site containing theminor geocode is searchable using the major and minor geocodes. In thismanner, if a web site has a page containing address information and thatpage is not for example, a home page of the web site, a contact page ofthe web site, a direction page of the web site, an about page of the website, a help page of the web site or a page of the web site that isdeeper than a predetermined number of links below the home page of theweb site, then the address information on that page is a minor geocodeand is only used as a location index to the content of that page,whereas a major geocode is associated with all content of all pages ofthe web site, including the page with the minor geocode addressinformation.

This is further illustrated in FIG. 5, in which a major geocode isidentified. A major geocode represents the physical location of a website's business. The search engine 100 analyzes relationship of geocodesin a web site to determine the major geocode for that site. In oneconfiguration, several empirical rules operate to find suchrelationship. In one case, a major geocode typically exists in a homepage, a direction page, a contact page, an about page or a help page.The home page is the entry or first level of a web site. A smallbusiness web site usually has the address listed in home page. Adirection page contains transportation information to the physicallocation. A contact page, an about page and/or a help page may alsocontain the physical location. Alternatively, a major geocode may bespecified as any address that appears within M levels deep from the homepage (where M is an integer, such as 5). The assumption is that abusiness shall list its physical location within a reasonable number oflinks from the top level web page. If there are multiple geocodes in aweb site, they shall be listed in the same web page, or their anchortexts can be found in one web page. It is to be understood that more orless of such rules can be used, depending upon the embodiment of theinvention.

For a given web site in step 501, the geocoder 302 obtains all geocodesfound for web pages in 502. The geocoder 302 judges whether there isgeocode existing in step 503. If there is no geocode at all, it reachesstep 507, and the web site can be marked to be manually checked (e.g.,by an administrator operating the search engine 100) to determine amajor geocode. If there are geocodes, the geocoder 302 deletesduplicates geocodes from the lists in step 504. If two geocodes have thesame address, city and state name, they are considered to be duplicates.The relationship of remaining geocodes is analyzed by empirical rules instep 505. Next the geocoder 302 determines whether the major geocode isfound in step 506. If there is no major geocode found by the software,the web site will be manually checked to determine the major geocode in507.

Geographical information has a great variety of representations in anyparticular web site. Some web sites can display information in anunusual way. Other web sites might use a graphical image to store thegeographical information. However, in some cases, geographic informationwithin an image cannot be recognized by computer program easily.Alternatively, text-in-image recognition software can be used if nogeocode is found for a web site, but there are graphical images invarious pages of the site. In such cases, the site can be revisited toobtain the images of each page and each image can be scanned todetermine if an address is graphically shown in a graphic.

Alternatively, the geocoder 302 can provide a manual mode to catch thesesituations in which the web site is flagged and an administrator visitsthe site to determine the proper geocode. If there are major geocodesfound in manual mode, the major geocodes can be entered into the systemmanually. The geocoder 302 checks whether there is major geocode foundin step 508. If there is still no valid geocode available, the web siteURL will be flagged to avoid a future crawl of the web site in step 509.In one configuration, the geocoder 302 is not interested in web sitesthat have no geographic information. Finally in step 510, geocodes arestored in a hard drive or other repository along with the web pagescontent.

Note that in one configuration, major geocode and minor geocodes arehandled differently. Major geocodes are stored with every page of theweb site, whereas minor geocodes are only stored with their own webpages. Note that some web pages may not contain geographical informationat all. The major geocodes will still be stored along with the contentof these web pages, and these are referred to herein as geocodable webpages (since they will have an associated geocode, but do not themselvescontain address information). This enables a geographic search of theevery web page in a geographically related web site (i.e., in a sitethat specific some address on some page). For example, a small businessweb site may list an office location in a contact page. The other webpages of that site may have no geographical information such as anaddress in their content.

The method disclosed herein thus identifies a geocode by a computerprogram, by manual editorial review, or it may be obtained from thirdparty data provider using an automated lookup procedure. As an example,some yellow page data providers can provide certain business names, URLsand physical addresses of businesses. The physical address representsthe major geocode of a business. In all cases, no matter how the geocodeis obtained, the geocode is stored with each page of the web site. Sincegeocodes are stored along with every page of a web site, the whole website is searchable by the present invention. This is a major advantageof the present invention over conventional search engines. Note that inone configuration, minor geocodes are stored only with the content oftheir own web pages. For instance, a chamber of commerce web site mayreference many business locations in a web page. These businesslocations are recognized as minor geocodes and are applicable to theirown web pages and not all pages in the chamber site. The system storesminor geocodes along with the web page content to enable the search ofthe businesses in the page.

FIG. 6 shows a map of a simulated area. The actual map could be a realmap of a specific country, such as USA map, CANADA map, UK map etc. Theexample map is for illustration only. In the map, it consists of fourregions, 601, 602, 603 and 604. Solid lines are region boundaries. Eachregion is a geographical area such as a state or a province. Because ofboundary effect, people living on or near a border may be interested inbusinesses located in nearby regions. Thus a business near the border ofregion 601 might have customers from region 602 and 603 as well. Thedashed line 605, 606 is the expanded boundary line of region 601. Thedashed line is drawn within at a predefined distance from the solidline. The predefined distance can be 50 miles, or 50 km, or others. Inthis invention, each folder 305 (FIG. 3) includes overlapping content ofweb pages from web sites associated with entities located within acertain overlapping distance into the other folder.

One problem with conventional search engines is that they performsearches on content from web pages collected from all over the world. Incontrast, configurations described herein can divide the web intodifferent countries and provide a search engine 100 for each, and eachsearch engine 100 can index content locally for each country. Using thisapproach, the local search engine 100 disclosed herein deals with datain a certain country and the resources needed to process searches aregreatly reduced. Second, within each country, the area is furtherseparated into different smaller regions, such as at state or provinceor county level and each folder 305 can be used to store web pagecontent for that state. Thus searching something in New Jersey does notneed to cover content for web pages of web sites for entities located inOhio.

FIG. 7 illustrates flow chart of a geosorter 303 operating in accordancewith one example embodiments. The geosorter 303 can segment a largerepository to geographical related smaller ones of folders 305. In oneconfiguration, the geosorter 303 sorts the content of the geocoded andthat geocodable web pages based on the geocode (e.g.,. the majorgeocode) to associate the content of the geocoded and geocodable webpages to a folder 305 representing a geographic region that is inclusiveof the geocode. The folder 305 is selected from a plurality of folderseach representing a respective geographic region that is different (butmay be overlapping) from the geographic region of other folders. Sortingthe content in this manner comprises segmenting a large geographicalregion into a plurality of smaller geographical regions thatcollectively represent the large geographical region. The initial setupof the search engine 100 can include creating a different respectivefolder to represent each respective smaller geographical region of theplurality of smaller geographical regions that collectively representthe large geographical region. The geosorter 303 can identify the folderrepresenting a geographic region that is inclusive of the geocode for aweb site and can associate the content of the geocoded and geocodableweb pages of that site to the identified folder.

In further detail, in one embodiment, a repository contains web pages ofthe United States. The geosorter 303 will sort and copy data from therepository to different folders. Each folder holds data for a certaingeographical region. The objective is to make data in each folder to bewell balanced. As an example, in step 701, the US map is divided intosmaller regions such as states. However, some states are much larger andsome states are too small, thus some states may be split to smallerareas while many small states may be merged together into a singlefolder. Folders can be created based on other criteria as well. Forexample, population is another factor that can be used to decide whetherto split or merge folders. For example, the State of California may bedivided into northern California, central California and southernCalifornia. Delaware may be merged with Maryland in a single folder 305.Alaska is big in size, but the population is small and it may be mergedwith Hawaii into a folder 305, even though Alaska and Hawaii are faraway. Once the boundary distance is defined, a zip code can beassociated with a region if the zip code is within the expanded line ofthe region in step 702.

In step 703, each region is mapped to a folder in hard drive. Forinstance, it may contain a folder structure /repository/NJ/,/repository/CAN/, /repository/CAC/, /repository/CAS/ etc. The folder/repository/NJ/ contains web sites from New Jersey. The folder/repository/CAN/ holds data from northern California. The folder/repository/CAC/ contains data in central California. The folder/repository/CAS/contains data from southern California.

Note that in one example configuration, each folder can have a list ofzip codes associated with that folder and zip code near a state borderfor example might be included in two folders, since the neighboringfolders contain overlapping data, and thus store and have indexedoverlapping or duplicate content. Thus content for a web site for abusiness located on a state line may be contained in two folders thatcontain overlapping data for businesses on either side of the stateline. As discussed above, the major geocode of a web page is found inFIG. 5. If the zip code of the major geocode falls into the expanded oroverlapping boundary line of a folder, the web page and relatedinformation such as URL, geocode will be copied to the respective folderin 704.

In step 705, the geosorter 303 eliminates duplicate web documents in afolder. Many documents on the web are available under different domainnames. It is important to eliminate the duplicates for the benefit ofreduced index size and faster search. In one example, an MD5 checksum iscalculated for web pages in each folder and duplicate or second copiesof web pages having the same checksum value are deleted.

In a conventional search engine such as Google, more than 10,000computers operate to processes searches, leading to high costs. Incontrast to this design, one purpose of the geosorter 303 is to separatethe big repository into smaller ones to allow a search engine computerresources list to have a liner relationship with the size of repository.For instance, the query “Restaurant in Dayton NJ” will look at the datain New Jersey region. The data set is about 1/50 of original repository.Thus, the hardware resources required by a search engine 100 of thisinvention are reduced to 1/50 of conventional one required is using asite like Google. Since geographical related web sites tend to be muchsmaller than general web sites that are not limited to a particulargeographic area, the local search engine 100 disclosed herein only needsa fraction of the resources of a conventional search engine. Furthermoresince each small folder repository is geographically encoded, the localsearch engine 100 only needs to search the geographical relatedrepository containing content associated with a location specified by auser and omits irrelevant results by avoiding searching the other folderrepositories 305. In one configuration, small folder regions can beused, such as each zip code area being defined as a folder region in oneexample configuration.

The georanker 304 provides a unique ranking technique using local linksto pages between locally linked web sites. In general, a popular website often has other web sites linked to it. Link analysis is oftenperformed in conventional search engines to identify the popularity of aweb site. As an example, Google uses a PageRank algorithm that providesdifferent weights to linked documents. There are other rankingalgorithms such as a hyperlink-induced topic search (HITS) algorithm ofKleinberg that exist as well. However, since the Internet is withoutgeographical boundaries, conventional link analysis includes all webdocuments regardless of their geographical locations. Using a rankingtechnique such as that used in Google, typically a small business website ranks low since the business does not have the marketing power andvisibility of a big company. Also a small business web site is onlyrelevant to customers nearby that small business. Even if a smallbusiness web site has a very high rank using conventional link analysisdue to its popularity, most end users that see this site in searchresults may find the result irrelevant since it is far away from theirlocation. Thus the conventional ranking of web sites suffers fromsignificant problems when applied to geographical searching.

FIG. 8 illustrates operation of a georanker 304 that overcomes suchproblems in accordance with one embodiment. The georanker 304 ranks webdocuments limited to a specific geographical area specified by thefolder 305. Georanker will generate a georank or score (GR), in which ahigher score indicates a better ranking of the web document in a regionsince many other sites in that region link to that site or page. Thegeorank GR is independent of the content of the web document and it isnot affected by query string. In addition, the georanker 304 is notsusceptible to a common phrase spamming technique to improve therelevance of a searching result.

Generally, the georanker 304 performs georanking of content of the webpages associated with a folder 305 by analyzing link popularity of linkscontained within content of other web pages associated with the folderthat reference those web pages. This can include identifying links incontent of web pages associated with the folder. For each identifiedlink, the georanker 304 adjusts (e.g., increments) a georank of a webpage referenced by that identified link if the web page identified bythat link has a geocode associated with the same folder associated withthe web page from which the link was identified. This can also includeidentifying a weighting factor for each of the web pages within thefolder that links to a particular web page in the folder. The weightingfactor in one example is dependent on an estimation of the physicaldistances between the linking web pages. In such a configuration, thegeoranker 304 adjusts the georank of the web pages being linked to basedon the identified weighting factor.

The georanker 304 processing is conducted for the repository of eachfolder 305 independently. The repository is obtained by the geosorter inFIG. 7 as explained above. Web pages of the same folder are geographicalrelated and thus the georanker 304 determines the ranking of individualweb pages in one folder. If web page A links to web page B and they arein the same folder 305, there will be link analysis between the two webpages. However, if web page C links to web page B and they are indifferent folders 305, there will be no link analysis between C and B,since they are not geographically related.

By using web page data in a repository from a single folder instead ofthe whole Internet for the link analysis, several major benefits areobtained. Such benefits include: 1) Web sites within an area are moregeographically relevant to each other. It is most likely a localtownship web site will mention a restaurant nearby than thousands ofmiles away; 2) Web pages from a folder are much smaller than the wholeInternet of web pages. A small business web site has good chance to rankhigher after being placed in a folder with other web sites in a commongeographical vicinity; and 3) Using folder allows the system to beresistant to certain web site link exchange farms. Link exchange farmsare notorious for artificially linking to web sites for better searchengine ranking positions. These link exchange farms are typicallyvirtual web servers that do not have physical locations. Link exchangefarms are excluded in the system by the Geocoder 302. Thus the linkfarms will have no effect in the link analysis in the present system.

In operation of one example configuration of a georanker 304, as shownin FIG. 8, for each web page of a folder in step 801, URLs of hyperlinksin the web page are extracted in step 802. The URL is further normalizedby its domain name in step 803. For instance, the URL string./help/faq.html for domain www.atlocal.com will be normalized tohttp://www.atlocal.com/help/faq.html. A checksum is computed for thenormalized URL in step 804. The checksum can be a CRC checksum (e.g.,32-bits) and it is unique for each URL. The checksum is used in latersteps and it speeds up the overall calculation substantially in thisconfiguration. Link analysis is performed in step 805 and each web pageis assigned a score.

One simple score can be the citation number, which is the number of webpages linking to a given web page. Other more complex methods caninclude PageRank, which is disclosed in U.S. Pat. No. 6,285,999. Anotherlink analysis method is disclosed in U.S. Pat. No. 6,182,091, “Methodand apparatus for finding related documents in a collection of linkeddocuments using a bibliographic coupling link analysis” by James E.Pitkow and Peter L. Pirolli. The entire contents of each of thesepatents are incorporated by reference herein. None of the link analysisis these systems considers the use of a geographical factor. Embodimentsof the invention are based in part on the observation that ageographically relevant web site is most likely to link to another website nearby. When doing a local search, people are interestedinformation in a certain area. For instance, a local township web sitemight link to a local library, a local police station and several localrestaurant web sites. These linkages are provided with a higher weightin the link analysis disclosed herein.

In one configuration, geocodes (e.g., major geocodes) are recognized fora given web site by the geocoder 302. The geographical distance of twoweb pages can be calculated based on these geocodes. For web pages inthe same web site, the distance is 0. For two web pages from differentweb sites, the distance can be calculated by the system disclosedherein, for example, based on major geocodes' latitude and longitude. Ifthere are multiple major geocodes between the two web sites, the minimaldistance can be used in the link analysis.

A distance weight can measure the physical distance between two webpages. If two web pages are close in distance, the weight is high.Otherwise the weight is low. For two web pages, the distance weight canbe modeled as a linear function as follows:

DW=(MAXD−Distance)/MAXD   Equation 1

Min(DW)=0.1   Equation 2

-   -   Where DW is the distance weight, MAXD is the maximum distance in        local search settings. It is typically set as 50 miles, and        Distance is the distance between the two web pages.

In order to normalize result, any DW value less than 0.1 is set as 0.1.The maximum value of DW is 1 and the minimal is 0.1. For web pages inthe same domain, DW value is 1 since the distance is 0. For web pages incloser distance, DW value is higher. The DW value may be determined bymodel other than linear.

The georanker 304 performs a calculation of georank (GR) that providesthe link analysis for a collection of geographical related documents.This calculation provides an improvement over the conventional PageRankalgorithm by introducing the geographical distance weight in linked webpages. For a given page A, the georank score GR can be determined by thefollowing equation:

GR(A)=(1−d)+d*(GR(T1)*DW(T1)/C(T1)+GR(T2)* DW(T2)/C(T2)+ . . .+GR(Tn)*DW(Tn)/C(Tn))   Equation 3

Where GR(A) is the georank of page A. Page T1, T2, . . . , Tn link topage A,

-   -   GR(Ti) is the georank of page Ti. Page Ti links to page A,    -   DW(Ti) is the distance weight between page A and page Ti. It is        determined by equation 1 and equation 2.    -   C(Ti) is the number of outbound links in page Ti,    -   d is a damping factor, usually it is set as 0.85.

The georank calculation considers the geographical distance as a weightin the equation. Thus it can boost the final GR score for linked webpages in closer physical locations, while the GR score is suppressed forlinked web pages far away. In this manner, a local authority web sitecan be boosted in georank score from the web sites that are close inphysical locations.

Returning to FIG. 8, in step 806 a score statistics of the link analysisis calculated. The final score GR is normalized into a range (1, 10),which 10 is the maximum score, 1 is the minimal score. The ratio betweenthe maximum score and minimal is 10. The GR for each web page is storedalong with the repository in step 807.

FIG. 9 shows a flow chart of processing steps performed by a geoindexer306 in accordance with one example embodiment of the invention. Ingeneral, the geoindexer 306 generates inverted index of web documentsand stores geographical information in the index. This includes indexingcontent of the geocoded web page and content of the geocodable web page.The indexing associates the geocode contained within content of thegeocoded web page to the indexed content of the geocoded web page and toindexed content of the geocodable web page to allow geographicalsearching of the content of these pages. The geoindexer 306 generates aninverted index of content within the folder. The inverted index includesthe geocode and georank for all content indexed and associated with thegeocoded and geocodable web pages in the folder. In particular, for eachweb page in each folder, the geoindexer 306 produces a searchablecontent index of content of the geocoded and geocodable web page andderives at least one specific geographic reference based on the geocode.The geoindexer 306 stores the specific geographic reference in relationto the indexed content for each web page within the searchable contentindex for that folder and indexes and stores a unique documentidentifier associated with each web page within the searchable contentindex for that folder.

As noted above, for a web document, it takes several steps to create theinverted index: 1) Special tags are filter out and a TEXT format file isgenerated. For instance, HTML tags are deleted. 2) The text file istokenized to a number of words. For example, sentence “There are a fewgreat Italian restaurants in Dayton NJ.” is tokenized to “there”, “are”,“a”, “few”, “great”, “Italian”, “restaurants”, “in”, “Dayton”, “NJ”. 3)The stop words are eliminated in the tokens. The stop words includecommon word “a”, “an”, “the”, “in” etc. Because the stop words are socommon, it is necessary to filter them out in the tokens. 4) The tokensare stemmed. For instance, “restaurants” is stemmed to “restaurant”.“running” is stemmed to “run”. So that “restaurants” and “restaurant”are the same in searching. 5) The position of each token is recorded.The position is important to determine the distance of tokens. Forexample, two close words shall have a higher rank than those far awayfor a two words query. There are other considerations in the invertedindex such as frequency of tokens in a document and batch indexing andupdate. Details of indexing techniques can be found at the book “Miningthe Web, Discovering Knowledge from Hypertext Data” by SoumenChakrabarti, Elsevier Science 2003, the entire contents of which isincorporated by reference herein.

The geoindexer 306 stores geographical information to index contentefficiently, and handles several cases with regards to indexing: 1) AStored field. A stored field contains a text string that is stored inthe index but is not searchable. A stored field can be retrievedefficiently from the index for display. 2) An indexed field. An indexedfield is searchable, but it can not be retrieved. 3) stored and indexedfield. The field is both stored and indexed, so that it can be searchedand retrieved.

In the steps in FIG. 9, for each web page of a folder in step 901, thatweb page is associated with a unique docID in step 902. Since a URL ofeach web page is unique, the docID is unique. The docID is stored andindexed for later indexing and searching. URL string is stored as “URL”field in the index in step 903. This enables the search engine 100 todisplay the URL string in search result. Major geocodes are stored as“GEOCODE” in the index in step 904. This allows the fast retrieval ofgeographic information of the web page. Minor geocodes are stored in“MGEOCODE” field. In addition, the geoindexer 306 stores the zip codesof major geocodes to a “ZIP” field and stores zip codes of minorgeocodes to an “MZIP” in the index in step 905. The “ZIP” and “MZIP”fields are used later for faster searching. A major geocode is moregeographically relevant than a minor geocode. The geoindexer 306 storesthe major geocode and minor geocode in separate fields to set a higherboost for the major geocode. The title of a web page is the name of webdocument and is a good representation of the web document. In step 906,the “TITLE” is both indexed and stored, so that title can be searchedand displayed. To avoid spamming, the first 100 characters of title areindexed and stored and the later characters are discarded. Each web pagecontains a GR score calculated by the georanker 304 as explained above.The GR score is also stored and indexed in step 906, so that the GR canbe used in later searching. A higher GR value indicates a more popularlocal web site such as community web site or higher authority local website such as the chamber of commerce web. In step 907, the “CONTENT” isindexed for the entire content of the web page. Thus the entire contentis searchable. Title and content are indexed separately to boost theimportance of title. Note that tags of the web page were stripped out aswas explained in FIG. 4. Some search engines index the <META> content.Because <META> content is invisible to users, it opens an opportunityfor spamming a search engine by creating irrelevant keywords in <META>content tag. Thus this embodiment abandons the usage of <META> contenttag. In alternative configurations, the META tag information is alsoindexed.

In one configuration, a geocode can be associated with a pair oflatitude and longitude value. Based on geocodes of a web page, a list oflatitude and longitude pairs can be generated. The latitude andlongitude are represented as Mercator easting and northing distance. Inthis example configuration, deriving at least one specific geographicreference from the geocode comprises looking up a zip code correspondingto the at least one specific geographic reference and generating atleast one Mercator value corresponding to the specific geographicreference. In this case, indexing and storing a unique documentidentifier associated with each web page comprises generating therespective unique document identifier for each web page based on auniform resource locator associated with each web page.

Mercator projection was invented by Gerard Mercator in the 16^(th)century. Mercator distances are used to filter out results that aregreater than a searching radius. A Mercator value is calculated in theprecision of miles since it is for distance filter and the precision inmile is good enough. The calculation of distance based on normallatitude and longitude takes much more time since there is SIN and COScalculation. Duplicate Mercator easting and northing pair values arefurther eliminated. The pair values are sorted increasingly by eastingvalue first and by northing value second. Finally there will be a listof unique Mercator easting and northing pair values associated with theweb page. The Mercator easting and northing pair values are indexed andstored into field “LOC” in step 908.

For example, a web page may contain four geocodes. The first pair hasMercator value (1483, 1117), where 1483 is easting and 1117 is northing.The second pair is (1493, 1107), the third pair is (1505, 1163), and thefourth pair is (1493, 1107). The final Mercator pair values can berepresented as string: (1483, 1117)(1493, 1107)(1505, 1163). The stringis indexed and stored to “LOC” field. Since the second pair is the sameas the fourth pair, the final string contains three pairs of Mercatorvalues.

A barrel for a folder is generated by Geoindexer in step 909. Eachfolder holds a repository of web page content from a geographicalregion, which includes data within that region and data in an expandedregion that overlaps regions represented by nearby folders. The barreland zip code lookup table are determined and stored in hard drive instep 910. There is a one to one relationship between a zip code and abarrel. For a given zip code, it can be associated with only one barrel.A barrel contains data within a geographical region and its expanded oroverlapping region. Since there is data overlap in the expanded region,all zip codes within the region are associated in the barrel and zipcode lookup table. Zip codes in the expanded region are omitted for thetable.

The barrels are independent of each other and can be searchedseparately. One barrel is relevant to a certain geographical area and itis much smaller than the original repository. A smaller barrel canreduce the resource required by searching. Given a zip code, only thegeographical related barrel need be searched. Lots of unrelated barrelsare not searched. Thus the present invention improves the speed andaccuracy of performing a geographical (i.e., a local) search.

FIG. 10 illustrates a flow chart of a geosearcher 308 in accordance withone example embodiment of the invention. Generally, the geosearcher 308receives a user query including at least one keyword and a location. Thegeosearcher 308 uses the location to identify a barrel in which tosearch content of web pages indexed with that barrel. For all indexedweb page content in the searchable content index for that barrel thathas a corresponding specific geographic reference within the set ofnearby specific geographic references, the geosearcher 308 identifiesmatching web pages that contain content matching the at least onekeyword. The geosearcher 308 uses the location to identify a set ofnearby specific geographic references indexed within the barrel that arewithin a proximity to the location and provides an indication of theidentified web pages to a computer system from which the user query wasreceived. In this manner, searching results are provided that are nearbythe user specified location. Identifying web pages that contain contentmatching the keyword can comprise ordering the matching web pages basedon the specific geographic reference of each matching web page inrelation to proximity to the location received in the user query, orordering the matching web pages based on the keyword matching scores, orordering the matching web pages based on the georank of the matched webpages.

The geosearcher 308 thus allows geographical searching of the content ofthe geocoded web page and the geocodable web page(s) of a web siterelative to the geocode by processing a user query that includes alocation against the indexed content of the geocoded web page andcontent of the geocodable web page(s) to identify web pages within apredetermined proximity to the location specified in the user query thatcontain content matching the user query.

In one configuration, processing a user query that includes a locationagainst the indexed content of the geocoded web page and content of thegeocodable web page comprises receiving a user query including at leastone keyword and a location and using the location to identify a folder(i.e., an indexed barrel) in which to search content of web pagesindexed with that folder. The folder/barrel is selected from a pluralityof folders/barrels that each contains location indexed web page contentfor web pages associated with a specific geographic region. For allindexed web page content in a searchable content index of the folderthat has a corresponding specific geographic reference within the set ofnearby specific geographic references, the geosearcher 308 identifyingmatching web pages in that folder that contain content matching the atleast one keyword of the user query. The geosearcher 308 then uses thelocation to identify a set of nearby specific geographic referencesindexed within the folder/barrel that are within a proximity to thelocation and provides an indication of the identified web pages to acomputer system from which the user query was received.

One goal of geosearcher 308 is to provide high quality local searchresults efficiently. The geosearcher 308 operates as bridge between theuser queries and the indexed barrels. The geosearcher 308 in oneconfiguration is a software component installed on one or more webservers. The web server has a static IP address and a fast Internet linksuch as T1 line. A user query includes keywords and geographicinformation. In one embodiment, the browser contains two text boxes: onefor keywords and the other for location a shown in FIG. 11. The usersupplied geographical location information can be a zip code, or a townname and state name. For example, a valid query could be “Restaurant”for keyword and “Dayton NJ” for geographical location. Another validquery could be “Italian Restaurant” for keyword and “08810” forlocation. Yet another valid query could be “Chinese Restaurant” forkeyword and “Dayton, NJ 08810” as the location. The location may bestored in the computer using a cookie or other technique, so that userdoes not have to enter the location again at the next visit.

In another embodiment, a user's location can be predetermined and a useris not required to enter location information. For example, certainWireless Application Protocol (WAP) phones can detect a geographicallocation of the caller. A user only needs to enter keywords and thelocation information can be obtained from the WAP phone. In such aconfiguration, there is just one text box for the keyword and nolocation text box is needed. With the invention disclosed herein, it isconvenient to search a nearby business with a WAP phone.

A search result that matches the user query is called hit. The hit alsocontains a score indicating the search result quality. The score ismeasured by the similarity between query terms and a document. Thegeosearcher 308 is responsible to find hits within a configurabledistance from a barrel. The distance can be set to, for example, 50miles.

The operation of the geosearcher 308 begins in step 1001 at which pointa lookup table is generated for each zip code. The look up tablecontains an array of data records. Each record contains a zip code, thenumber of nearby zip codes, the zip code's nearby zip codes anddistances between the zip code and its nearby zip codes. It can bestored in the following data structure:

struct zipPair{  char zip[6]; //the nearby zip code  short distance;//the distance between a zip code and its nearby zip }; structzipLookUp{  char zip[6]; //the zip code  short num; //number of nearbyzip code within a predefined distance  zipPairzipNearby[MAX_ZIP_NEARBY]; }; //the zip code look up table that containsnearby locations zipLookUp zipTable[MAX_ZIP_CODE_NUM];

The formula of calculating distance by latitude and longitude is wellknown. The table can be pre-calculated and stored for later access fordistances between zip codes. The lookup table is sorted by zip code inincreasing order for faster searching. A binary search is a fastsearching algorithm that requires the data source to be in sorted order.During initialization, the lookup table can be read to server memoryfrom a hard drive to avoid slow hard drive disk seeking.

Another lookup table in step 1002 is prepared in memory as well. Thelookup table in step 1002 holds all of the town names, state names andzip codes. The lookup table is sorted first by state name, then by townname. The geosearcher 308 awaits a user query in step 1003. Upon receiptof a user query, the geosearcher 308 analyzes the user query to makesure the query is valid in step 1004. A valid query must contain anon-empty keyword and valid location string. An invalid user query maycontain either no keyword or no valid location. If the keyword isnon-empty, the zip code can be obtained from location string. In step1004, the zip code is checked with the lookup table made in step 1002 tomake sure the input zip code is correct. If there is no zip code insidea location string, the geosearcher 308 can do a binary search in step1004 from lookup table made in step 1002 to find a corresponding zipcode.

The geosearcher 308 checks whether the query is valid in step 1005. Ifthe query is invalid, it displays the explanation for the invalid queryand stops further processing in step 1006. An explanation message can beprovided to assist the user to re-enter a correct query.

Once a valid query zip code is found, the geosearcher 308 checks thelookup table made in step 1001 and generates a list of nearby zip codesin step 1007. The nearby zip lists for a user's query zip code is asubset of the table made in step 1001. The nearby zip lists are usefulfor result filtering in later steps as will be explained. By checkingthe user's query zip with the barrel and zip lookup table (made in step910), a specific barrel related to the query is assigned in step 1008.For a given zip code, there is a unique barrel to search within. In step1009, the geosearcher 308 searches keywords against the barrel andreturns a number of hits. The geosearcher 308 checks whether there isany hit in step 1010. If there is no hit, it will display “no result”found page in step 1011.

If there is hit, the results may contain hits that are more than apredefined distance RADIUS, such as for example, 50 miles from usersupplied query zip code. The local search engine 100 can search resultswithin a certain distance, this may be a user specified distance. Thesehits can be filtered out in step 1012 to only include those within thepredetermined distance.

In one embodiment, the hits are filtered out by comparing the user'slocation with “LOC” field. The user's location has a Mercator eastingand northing value (X, Y). So the range of easting value shall be(X−RADIUS) and (X+RADIUS). The range of a northing value shall be(Y−RADIUS) and (Y+RADIUS). If each pair value of the “LOC” field is outof range, the hit is filtered out. If a pair value (X1, Y1) is withinthe range, a further calculation is needed. It is determined in oneconfiguration by the following equation:

(X1−X)*(X1−X)+(Y1−Y)*(Y1−Y)<=RADIUS*RADIUS   Equation 4

If a pair value of “LOC” can not meet the criteria of the aboveequation, the hit is filtered out as well. Note that the calculation isvery fast since the computation is simple.

In another embodiment, the hit can be filtered out by a lookup table.Each hit has a “ZIP” and “MZIP” field. The filter compares zip codesfrom “ZIP” and “MZIP” with nearby zip code lists 1007. If all of the zipcodes are not inside the list made in step 1007, the hit is filteredout. Otherwise the hit is kept in step 1012. If a zip code from “MZIP”field is inside the table made in step 1007, the geosearcher 308suppresses the hit result by dividing the hit score by 5. In thismanner, the minor geocode ranks lower in searching result.

In step 1013, the geosearcher 308 judges whether there is hit left afterthe filter. If there is no hit, a “no result” page will be displayed instep 1014.

If there are results left after the filtering, the results are sortedaccording to ranking. The ranking is important in a search engine toensure good relevant results are presented first to the user. Relevanceis the key to a search engine's success. The method disclosed hereinorganizes data according to geographical area. Content from web sites ingeographical areas unrelated to a user specified location are notsearched, thus speeding the search process. Conventional search enginesearch the entire web and have to rank much more documents, most ofwhich are irrelevant in a local area search. This is another advantageof the present invention compared with a conventional search engine whenperforming a local area search.

The ranking process of a local search has different characteristics thanranking performed in a general conventional search engine. The searchengine 100 disclosed herein filters out the results that are more than ageographical distance first. Then the search engine 100 considers thephysical distance factor of remaining results in performing the ranking.The search engine 100 can also consider the link popularity of a webpage.

Each hit has a score identified by the geosearcher 308. The score isdetermined by the occurrence of the query phrase in the searched webdocument. It depends on how often the phrase appears in web document,whether the title of web document has the phrase, whether several wordsof a query are close to each other in the web document, and so forth.The hit score indicates the matching rank between a phrase query and aweb document.

The GR value of a web document can, in one configuration, also beincluded in the ranking calculation. Each web document has a GR valuecalculated by the georanker 304 as explained above. The GR value is agood indication of the quality of a web page. Since the GR value isunrelated to query terms, it helps the ranking result by avoiding queryterm spamming.

When performing a local area search, distance is also an importantfactor. People prefer businesses that are closer in distance to theirlocation. The distance can be modeled as a linear function as thefollowing:

DistanceFactor=(RADUIS−Distance)/RADIUS   Equation 5

Min(DistanceFactor)=0.1   Equation 6

Where DistanceFactor is the distance factor,

-   -   RADUIS is the pre-defined distance threshold in search,    -   Distance is the actual distance between user's query location        and the web document's location.

Since Distance is always less or equal than RADIUS (results of distancegreater than RADIUS are filtered out), the maximum of DistanceFactoris 1. The minimal DistanceFactor is set to 0.1 so that the distancefactor is normalized. That means, if DistanceFactor is less than 0.1 byequation, it is set as 0.1.

The final ranking score is calculated in step 1015. Things such asphrase query terms, the link popularity of a web page, and distance areall important factors when performing a local area search. The mostrelevant local search results are a web document that has a high scorein phrase query, a high popular web site and is close to user's querylocation. The final ranking score is determined by the followingequation in one configuration:

FinalScore=SearchScore*GR*DistanceFactor   Equation 7

Where FinalScore is the final ranking score for the query,

-   -   SearchScore is the score returned by Geosearcher,    -   GR is the georank score of the web page,    -   DistanceFactor is the distance factor.

In step 1016, all hits are sorted by the final ranking scores. The ratiobetween maximum and minimal GR is 10. And the ratio between maximum andminimal DistanceFactor is 10 as well. Thus, not a single factor can bedominated in the final ranking score calculation. In one configuration,each hit contains the title, URL, geocode, summary text for keyword,etc. The title can be retrieved from “TITLE” field, URL is obtained from“URL” field“, geocode can be retrieved from “GEOCODE” or “MGEOCODE” bycomparing this with the query zip code. A summary text contains thesearch result string and the query keywords are highlighted. The hitsare organized as HTML format and sent to user's web browser in step 1017and the search engine 100 has finished the query.

Accordingly, in one configuration, using the location to identify a setof nearby specific geographic references indexed within the folder thatare within a proximity to the location comprises identifying a Mercatorvalue of the zip code from the location in the user query and generatingthe maximum and minimal Mercator values for the query. Then thegeosearcher 308 identifies Mercator values of matching web pages in thefolder that contain content matching the user supplied keyword. Then thegeosearcher 308 filters out the matching web pages that are out of rangebased on the Mercator values of the zip code and of the matching webpages in the folder that contain content matching the at least onekeyword.

In one configuration, using the location to identify a set of nearbyspecific geographic references indexed within the folder that are withina proximity to the location comprises identifying a zip code associatedwith the location received in the user query. Then the geosearcher 308identifies a list of nearby zip codes within a predetermined proximityto the zip code associated with the location received in the user query.Identifying matching web pages that contain content matching the keywordthen comprises identifying matches between the keyword and indexedcontent of web pages for which the geocode of each matching web pagecorresponds to a zip code within the list of nearby zip codes within apredetermined proximity to the zip code associated with the locationreceived in the user query.

In one embodiment, the user may choose to view search results that are adifferent distance from the user location. For instance, the user mayselect to see results within 5 miles, 10 miles, 30 miles, or 50 miles ofthe user specified location. The RADIUS parameter is changed accordinglyto accomplish this and is used in the above calculations. Thus thesearching results can be determined by the distance setting.

FIG. 11 illustrates an example resultant web page generated byGeosearcher 308 in response to a user query. The web page consists ofquery and search results. There are two text boxes 1101 and 1102. Textbox 1101 is for the query term input and text box 1102 is used forlocation input. The query term “Italian Restaurant” is entered in 1101and “Dayton NJ” is entered in 1102. The user then clicks the searchbutton 1103. The search distance is configurable by clicking distancesettings 1104. The top search result 1105 is displayed in the middle ofthe page. Each search result includes a title in the first line, theaddress and possible telephone number in the second line, the summary inthe third paragraph, and URL in the last line. The title of a searchresult is a hyperlink that can lead to the actual web site. A user canclick the various page links 1106 to see more results. In the bottom ofthe page, there are two empty text boxes 1107 and 1108. 1107 is thequery term box and 1108 is the location input box for another search.The search button 1109 is listed to the right of 1108. The userinterface is simple and intuitive to use but is shown here by way ofexample only and it is to be understood that this page format is notlimiting of the invention.

FIG. 12 illustrates a diagram of distributed geosearchers 308 inaccordance with one example configuration of the invention. Distributedgeosearchers 308 are utilized to make searching faster. In oneconfiguration, a main dispatcher computer in a cluster of computersperforms receiving a user query. Other computers in the cluster are eachassigned a portion of folders containing geographically indexed contentof web pages and a portion of the index associated with those folderscontaining the geographically indexed content. The main dispatchercomputer forwards the user query to a computer in the cluster that isresponsible for searching the geographic region associated with thelocation specified in the user query.

Some conventional search engines contain thousands of servers forsearching. Even though the traditional search engine answers a querywell, they generate poor results for local area searches. Since the fullrepository is so big, it is very complex to organize, distribute andmaintain the repository to thousands of severs in such conventionalsystems. In the invention disclosed herein, each barrel is anindependent index, which can be loaded to a single computer. This makesthe distributed computing much easier. A dispatcher 1201 listens to userquery and analyzes the zip code from the user query. The dispatcherstores the linked servers' configuration in memory so that it knows howto direct traffic based on the zip code. Another dispatcher 1202 canoperate in stand by, so that when dispatcher 1201 fails, it can serve asthe main dispatcher. According to query's zip code, a dispatcher willdirect traffic to a specific server 1203, 1204, 1205, 1206, or 1207 inthis example. The dispatchers and servers are located in a data centerthat has high speed network connection. Each server runs a geosearcher308. One or more barrels 307 can be stored in a server's hard drive. Thenumber of barrels 307 in a server is determined based on searching speedand user traffic volume. For instance, server 1203 may contain onebarrel 1208 that has a high traffic load while another server 1206 maycontain several barrels 1211 that have light user query loads. Thehardware configuration of each server can be identical or different. Ifa server fails, one server can operate as a back up to another one.

In the foregoing specification, the invention has been described withreference to specific embodiments thereof. It is clear to one skilled inthe art that the above embodiments may be altered in many ways withoutdeparting from the scope of the invention.

1. A method comprising: utilizing a first reference pointer to retrievefirst content, the first reference pointer at least in part specifying astorage location of the first content; utilizing a second referencepointer to retrieve second content, the second reference pointer atleast in part specifying a storage location of the second content;detecting a presence of geographical information in the second content;and creating an index to indicate that the first content is associatedwith an entity at a physical location as specified by the geographicalinformation in the second content.